package com.xg.java.controller;

import com.xg.java.util.CommonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;

/**
 * @author wang
 * @description 文件管理控制器
 * @date 2021-11-25
 */
@Slf4j
@RestController
@Api(tags = "文件上传统一接口")
@RequestMapping("/majorCommitteeWork")
@PropertySource("classpath:application.yml")
public class FileUploadController {

    String filePath="D:\\";

    /**
     * 指定路径上传文件
     *
     * @param file
     * @param filePath
     * @return
     * @throws IOException
     */
    @ApiImplicitParam(name = "filePath", value = "上传到服务器的文件路径", dataType = "string", defaultValue = "/test/", required = true)
    @ApiOperation("文件上传统一接口")
    @PostMapping("/uploadFileByPath")
    public Object uploadFileByPath(@RequestParam(value = "file") MultipartFile file,
                                   @RequestParam(value = "userId") Long userId) throws IOException {
        //生成随机数排重
        filePath+=userId;
        int random = (int) (Math.random() * 100000);
        String fileName = random + file.getOriginalFilename();
        File paths = new File(filePath+userId.toString());
        //判断定义的路径是否存在，不存在则创建
        if (!paths.exists()){
            paths.mkdirs();
        }
        //在path路径下创建一个文件
        File newFile = new File(filePath +
                fileName);
        //判断父目录是否存在，不存在则创建
        File parentPath = new File(filePath);
        if (!parentPath.exists()) {
            parentPath.mkdirs();
        }
        //判断文件是否存在
        if (!newFile.exists()) {
            newFile.mkdirs();//不存在的话，就开辟一个空间
        }
        //将上传的文件存储
        file.transferTo(newFile);
        return new CommonResult().success(filePath +
                fileName);
    }

//    @ApiOperation("获取定义的文件上传路径")
//    @GetMapping("/queryFilePath")
//    public String queryFilePath() {
//        return filePath;
//    }
//
//    @ApiOperation("获取nginx的路径")
//    @GetMapping("/queryNginxPath")
//    public String queryNginxPath() {
//        return path.getNginxPath();
//    }
//
//    public static void main(String[] args) {
//        int random = (int) (Math.random() * 100000);
//        System.out.println(random);
//        System.out.println(UUIDUtils.getUUID());
//    }

}
